package com.karson.service.service.impl;


import com.karson.common.vo.FileAlbumResultVo;
import com.karson.common.vo.FileResultVo;
import com.karson.service.service.UploadService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@Slf4j
@Service
public class UploadServiceImpl implements UploadService {
    @Override
    public FileAlbumResultVo fileUpload(MultipartFile multipart, String model, Integer pid) throws IOException {
        return null;
    }

    @Override
    public FileResultVo imageUpload(MultipartFile multipart) {
        return null;
    }

//    @Autowired
//    private AsmrConfig asmrConfig;
//    @Override
//    public FileAlbumResultVo fileUpload(MultipartFile file, String model, Integer pid) throws IOException {
//        // 1. 基本验证
//        if (file == null || file.isEmpty()) {
//            throw new AsmrException("上传文件不能为空");
//        }
//
//        // 2. 获取文件信息
//        String originalName = file.getOriginalFilename();
//        String extName = FilenameUtils.getExtension(originalName);
//        if (StringUtils.isEmpty(extName)) {
//            throw new AsmrException("文件类型未定义");
//        }
//
//        // 3. 生成存储路径
//        String rootPath = asmrConfig.getImagePath().replace("//", "/");
//        String datePath = java.time.LocalDate.now().toString().replace("-", "/");
//        String storagePath = String.format("public/%s/%s/", model, datePath);
//        // 4. 创建目标文件
//        File destFile = new File(rootPath + storagePath + originalName);
//        destFile.getParentFile().mkdirs();
//        AlbumResponse albumResponse = new AlbumResponse();
//        if (Constants.FILETYPE_ZIP.equalsIgnoreCase(extName)||
//                Constants.FILETYPE_RAR.equalsIgnoreCase(extName)||
//                Constants.FILETYPE_SEVEN_ZIP.equalsIgnoreCase(extName)) {
//            String extractPath = rootPath + storagePath + "extracted/";
////             albumResponse = extractSpecificFiles(destFile, extractPath, ".txt");// 提取所有.txt文件
//        }
//        // 6. 返回结果
//        FileAlbumResultVo result = new FileAlbumResultVo();
//        result.setFileName(originalName);
//        result.setExtName(extName);
//        result.setFileSize(file.getSize());
//        result.setUrl(storagePath + originalName);
//        result.setType(file.getContentType());
//        result.setAlbumResponse(albumResponse);
//        return result;
//    }


//    private AlbumResponse extractSpecificFiles(File zipFile, String destDir, String targetFilePattern) throws IOException {
//        String firstname = zipFile.getName();
//        firstname = firstname.substring(0, firstname.indexOf("."));
//        System.out.println("第一级root目录: " + firstname);
//        AlbumResponse albumResponse = new AlbumResponse();
//        albumResponse.setRjCode(firstname);
//        try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) {
//            ZipEntry entry;
//            List<TrackResponse> responseList = new ArrayList<>();
//            while ((entry = zis.getNextEntry()) != null) {
//                // 1. 跳过目录，只处理文件
//                if (entry.isDirectory()) {
//                    continue;
//                }
//                // 2. 检查文件名是否符合条件（例如：只提取.txt文件）
//                String entryName = entry.getName();
//                String extension = FilenameUtils.getExtension(entryName);
//                if (entryName.endsWith(targetFilePattern)) {
//                    // 3. 构建目标文件路径
//                    Path targetPath = Paths.get(destDir, entryName);
//                    Files.createDirectories(targetPath.getParent()); // 创建父目录
//                    String fileName = Paths.get(entryName).getFileName().toString();
//                    int lastDotIndex = fileName.lastIndexOf('.');
//                    if (lastDotIndex > 0) {  // 确保 "." 不是第一个字符（如隐藏文件 .gitignore）
//                        String trackName = fileName.substring(0, lastDotIndex);
//                        // 组装声音列表
//                        TrackResponse trackResponse = new TrackResponse();
//                        trackResponse.setTrackTitle(trackName);
//                        trackResponse.setMediaUrl(targetPath.toString());
//                        trackResponse.setMediaType(extension);
//                        trackResponse.setMediaSize(entry.getSize());
//                        responseList.add(trackResponse);
//                        System.out.println("去后缀后的文件名: " + trackName);
//                    } else {
//                        System.out.println("文件名无后缀: " + fileName);
//                    }
//                    // 4. 写入文件（不解压整个ZIP，只提取当前文件）
//                    try (OutputStream fos = Files.newOutputStream(targetPath)) {
//                        byte[] buffer = new byte[1024];
//                        int len;
//                        while ((len = zis.read(buffer)) > 0) {
//                            fos.write(buffer, 0, len);
//                        }
//                    }
//                    System.out.println("提取文件: " + entry.getName());
//                }
//                zis.closeEntry();
//            }
//            albumResponse.setTracks(responseList);
//            return albumResponse;
//        }
//    }
//    private String getFirstLevelDirectory(String path) {
//        int firstSlash = path.indexOf('/');
//        if (firstSlash > 0) {
//            return path.substring(0, firstSlash);
//        }
//        return null; // 没有目录结构
//    }
//    private String generateFileName(String extName) {
//        return System.currentTimeMillis() + "." + extName;
//    }
}
